// #include <iostream>
// #include <algorithm>
// #include <cctype>
// using namespace std;
// string s;
// int p1, p2, p3;
// int n;
// const int N =110;
// string a[N];
// int main() {
//     string ans;
//     cin >> p1 >> p2 >> p3;
//     cin >> s;
//     string temp = s;
//     n = s.size();
//     for(int i = 0; i < n; i++)
//     {
//         if(s[i] == '-') {
//             if(i - 1 >= 0 && i + 1 < n && s[i - 1] < s[i + 1]) {
//                 char a = s[i - 1], b = s[i + 1];
//                 if(!(isdigit(a) && isdigit(b)) || !(isalpha(a) && isalpha(b))) {
//                     continue;
//                 }
//                 string ans = sub(s.begin() + 0)
//                 if(p1 == 1) {
//                     string t = "";
//                     for(int i = a - 'A' + 1; i < b - 'A'; i++) {
//                         while(p2--) {
//                             t += i + 'A';
//                         }
//                     }
//                     if(p3 != 1) {
//                         reverse(t.begin(), t.end());
//                     }
//                 }else if(p1 ==2){
//                     string t = "";
//                     for(int i = a - 'A' + 1; i < b - 'A'; i++) {
//                         while(p2--) {
//                             t += toupper(i + 'A');
//                         }
//                     }
//                     if(p3 != 1) {
//                         reverse(t.begin(), t.end());
//                     }
//                 }else {
//                     string t = "";
//                     for(int i = a - 'A' + 1; i < b - 'A'; i++) {
//                         while(p2--) {
//                             t += "*";
//                         }
//                     }
//                 }
//             }
//         }

//     }
// }


// #include <iostream>
// #include <string>
// #include <cctype>
// #include <algorithm>
// using namespace std;

// string expand_string(int p1, int p2, int p3, const string& s) {
//     string result;
//     int n = s.size();

//     for (int i = 0; i < n; ++i) {
//         if (s[i] == '-' && i > 0 && i < n - 1) {
//             char left = s[i - 1];
//             char right = s[i + 1];

//             // 判断是否合法展开
//             if ((isdigit(left) && isdigit(right)) || (islower(left) && islower(right))) {
//                 if (left < right - 1) {
//                     string middle;

//                     for (char c = left + 1; c < right; ++c) {
//                         string temp;
//                         if (p1 == 3) {
//                             temp = string(p2, '*');
//                         } else {
//                             char ch = c;
//                             if (islower(left)) {
//                                 if (p1 == 2)
//                                     ch = toupper(c);
//                             }
//                             temp = string(p2, ch);
//                         }
//                         middle += temp;
//                     }

//                     if (p3 == 2) reverse(middle.begin(), middle.end());

//                     result += middle;
//                     continue; // skip this '-' (we don't add it)
//                 } else if (left == right - 1) {
//                     // e.g. d-e -> just skip '-'
//                     continue;
//                 }
//             }

//             // 不合法或无需展开的 -
//             result += '-';
//         } else {
//             result += s[i];
//         }
//     }

//     return result;
// }

// int main() {
//     int p1, p2, p3;
//     string s;
//     cin >> p1 >> p2 >> p3;
//     cin >> s;

//     cout << expand_string(p1, p2, p3, s) << endl;

//     return 0;
// }



#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string slove(int p1, int p2, int p3, const string& s) {
    int n = s.size();
    string ans;
    for(int i = 0; i < n; i++) {
        if(s[i] == '-' && i > 0 && i < n - 1) {
            char left = s[i - 1];
            char right = s[i + 1];
            if((isdigit(left) && isdigit(right)) || (islower(left) && islower(right))) 
            {
                if(left < right) 
                {
                    string temp;
                    for(char i = left + 1; i < right; i++) 
                    {
                        string t;
                        if(p1 == 3) 
                        {
                            t = string(p2, '*');
                        }else 
                        {
                            char c = i;
                            if(islower(i)) 
                            {
                                if(p1 == 2)                
                                c = toupper(i);
                            } 
                            t = string(p2, c);
                        }
                        temp += t;
                    }
                    if(p3 == 2) {
                        reverse(temp.begin(), temp.end());
                    }
                    ans += temp;
                    continue;
                }else if(left == right - 1) 
                {
                    continue;
                }
            }
            ans += '-';
        } else{
            ans += s[i];
        }
    }
    return ans;
}
int main() {
    int p1, p2, p3;
    cin >> p1 >> p2 >> p3;
    string s;
    cin >> s;
    cout << slove(p1, p2, p3, s);
    return 0;
}